The Basic Input/Output System, or BIOS, is basic low-level software for configuring a computer system. The BIOS is run by a computer when it first powers on and stored on hardware known as a BIOS ROM. BIOS ROM contents include the BIOS, configuration settings such as boot order and passwords, and BIOS logs. Part of the BIOS is executable x86 code, and part of it is compressed and requires decompression into memory before execution. In the process known as “booting up,” the BIOS prepares the machine so that other software programs stored on various media, such as hard drives, floppies, and CDs, can load, execute, and assume control of the computer. Other tasks that the BIOS performs include a power-on self-test to ensure that different hardware components in the system are working properly, executing the BIOS expansion ROM code on different cards installed on the computer, and providing a set of low-level routines that the operating system uses to interface with different hardware devices.
In older machines, BIOSes were held on ROM chips that could not be altered. As their complexity and need for updates grew, BIOSes were moved to EEPROM or flash memory that could be easily upgraded by the user. BIOS updates are necessary for fixing bugs, accommodating new devices and standards, improving performance and stability, and changing BIOS settings.
Traditionally, updating the contents of a BIOS ROM involved several steps that must be physically performed by a person at the machine. First, a system disk must be created by populating a floppy drive with system files. Next, the BIOS must be copied to the floppy disk. The machine must then be rebooted with the floppy disk in the floppy drive. The computer will boot off the floppy disk, and the user is then allowed to update the BIOS from the floppy disk. All steps in updating the BIOS are channeled through the machine's CPU.
Alternately, the BIOS may be updated by running a program on the machine's operating system. This may be accomplished by a user present at the machine, a remote user, or a scheduled process. While this BIOS update method is more convenient than the floppy disk method, the update process is still performed through the CPU.
While performing a BIOS update is relatively quick for a PC user, data centers typically employ thousands of servers. This makes the floppy-based BIOS update method impractical, as an administrator would have to manually perform the update to every machine on the network. In addition, both the floppy-based and operating system-based update methods require the machine to boot properly and do not work if the BIOS flash is corrupted. BIOS recovery processes exist to handle a corrupted BIOS flash, but also require manual intervention similar to the floppy disk-based update process. Furthermore, if the CPU of the system is down, there is no way to update the BIOS using the two methods described above. As a result, an optimal BIOS update method would allow BIOSes on multiple machines over a network to be updated at the same time without using the CPU or taking down the machine.